home *** CD-ROM | disk | FTP | other *** search
- NET_ALIAS device aliasing v0.5x
- ===============================
- The main step taken in versions 0.40+ is the implementation of a
- device aliasing mechanism that creates *actual* devices.
- This development includes NET_ALIAS (generic aliasing) plus IP_ALIAS
- (specific IP) support.
- From version 0.50, dynamic configuration of max alias per device and
- tx/rx stats for aliases added.
- Also fixed inter-alias routing and arping problems.
-
- Features
- --------
- o ACTUAL alias devices created & inserted in dev chain
- o AF_ independent: net_alias_type objects. Generic aliasing engine.
- o AF_INET optimized
- o hashed alias address lookup
- o net_alias_type objs registration/unreg., module-ables.
- o /proc/net/aliases & /proc/net/alias_types entries
- o /proc/sys/net/core/net_alias_max entry (affects hash table size
- also)
- o tx/rx stats
-
-
- o IP alias implementation: static or runtime module.
-
- Usage (IP aliasing)
- -------------------
- A very first step to test if you are running a net_alias-ed kernel
- is to check /proc/net/aliases & /proc/net/alias_types entries:
- # cat /proc/net/alias*
-
- For IP aliasing you must have IP_ALIAS support included by
- static linking ('y' to CONFIG_IP_ALIAS? question), or runtime module
- insertion ('m'):
- # insmod /usr/src/linux/modules/ip_alias.o (2.0.xx) or
- # modprobe ip_alias.o
-
- Also, dynamic loading is supported (kerneld).
- You should have the following line in /etc/conf.modules (not needed
- for newer modutils):
- alias net_alias-2 ip_alias
-
- Module options
- --------------
- From 0.5x ip_alias module supports a new option ("no_sel" symbol).
- If no_sel is set (default is 0), alias association (device selection) with
- foreign addresses will be disabled.
-
- You will get:
- - Faster operation by avoiding completely routing lookups.
- Due to the "logical nature" of aliasing, netdevice SELection can only be
- done based on info from network layer. When packet dst address isn't
- one of my addresses, I query the routing table to see which netdevice
- would be selected for packet _source_ address. This option avoids
- doing so, and you must consider using it if you *only* have same-net
- aliases (common usage).
-
- You will loose:
- - Inter-alias routing
- - Proxyarp over aliases
-
- To activate:
- # insmod ip_alias.o no_sel=1
- or
- # modprobe ip_alias.o no_sel=1
- or
- add the following line to /etc/conf.modules:
- options ip_alias no_sel=1
-
-
- o Alias creation.
- Alias creation is done by 'magic' iface naming: eg. to create a
- 200.1.1.1 alias for eth0 ...
-
- # ifconfig eth0:0 200.1.1.1 etc,etc....
- ~~ -> request alias #0 creation (if it not exists) for eth0
- and routing stuff also ...
- # route add -host 200.1.1.1 dev eth0:0 (if same IP network as
- main device)
-
- # route add -net 200.1.1.0 dev eth0:0 (if completely new network wanted
- for eth0:0)
-
- o Alias deletion.
- Also done by magic naming, eg:
-
- # ifconfig eth0:0- 0 (maybe any address)
- ~~~ -> will delete alias (note '-' after dev name)
- alias device is closed before deletion, so all network stuff that
- points to it (routes, arp entries, ...) will be released.
-
- o Alias (re-)configuring
- Aliases *are* devices, so you configure and refer to them as usual (ifconfig,
- route, etc).
-
- o PROCfs entries
- 2 entries are added to help fetching alias runtime configuration:
- a) /proc/net/alias_types
- Will show you alias_types registered (ie. address families that
- can be aliased).
- eg. for IP aliasing with 1 alias configured:
-
- # cat /proc/net/alias_types
- type name n_attach
- 2 ip 1
-
- b) /proc/net/aliases
- Will show aliased devices info, eg (same as above):
-
- # cat /proc/net/aliases
- device family address
- eth0:0 2 200.1.1.1
-
- o PROCfs dynamic configuration (from v0.50)
- You can now change the max aliases per device limit via
- /proc/sys/net/core/net_alias_max entry (default=256)
- # cat /proc/sys/net/core/net_alias_max
- 256
- # echo 1000 > /proc/sys/net/core/net_alias_max
- # cat /proc/sys/net/core/net_alias_max
- 1000
- # _
-
- With this funcionality you can disable net_alias creation from now on
- # echo 0 > /proc/sys/net/core/net_alias_max
-
- The new aliasing limit is considered (grabbed) when creating the
- FIRST alias for the main device.
- Eg:
- # echo 10 > /proc/sys/net/core/net_alias_max
- # ifconfig eth0:0 xx.xx.xx.xx (first alias creation for eth0,
- eth0 will 'remember' max==10)
- # echo 1000 > /proc/sys/net/core/net_alias_max
- # ifconfig eth0:999 xx.xx.xx.xx
- SIOCIFSADDR: No such device
- Of course these semantics can be changed, please let me know.
-
- Configuration changes get logged as usual (klogd -> /var/log/messages)
-
- o Alias devices rx/tx stats
- Fake rx/tx stats are accounted:
- - TX
- When the packet is ``switched'' from logical alias device to
- physical device, tx counter gets incremented.
- - RX
- When an incoming packet's address equals alias network device's addr it
- gets ``switched'' from physical to logical device, rx counter gets
- incr.
-
- Please NOTE that for ``same'' network alias devices you usually have
- one net-route through physical device (eg. eth0), so output pkts
- will NOT pass down via alias device (so, no tx++ will occur).
-
- Also NOTE that currently ifconfig does not handle the ``:'' of alias devices
- names, a little patch solves the problem:
- --- ifconfig.c.dist Tue Apr 4 17:58:32 1995
- +++ ifconfig.c Fri Oct 25 13:11:23 1996
- @@ -243,7 +243,12 @@
- bp++;
- if(strncmp(bp,ifname,strlen(ifname))==0 && bp[strlen(ifname)]==':')
- {
- - bp=strchr(bp,':');
- + /*
- + * start bp at ifname end to prevent ':' ambiguity
- + * with alias devices (eg. eth0:0)
- + *
- + */
- + bp+=strlen(ifname);
- bp++;
- sscanf(bp,"%d %d %d %d %d %d %d %d %d %d %d",
- &ife->stats.rx_packets,
-
- Relationship with main device
- -----------------------------
- - On main device closing, all aliases will be closed and freed.
- - Each new alias created is inserted in dev_chain just before next
- main device (aliases get 'stacked' after main_dev), eg:
- lo->eth0->eth0:0->eth0:2->eth1->0
- If eth0 is unregistered, all it aliases will also be:
- lo->eth1->0
-
- Contact
- -------
- Please e-mail me:
- Juan Jose Ciarlante <irriga@impsat1.com.ar> or <jjciarla@raiz.uncu.edu.ar>
-
- Acknowledments
- --------------
- Special thanks to Claudia for all her love an patience.
- Also thanks to Antonio Trevi~o <antonio@ecord.gov.ar> great human being
- and un*x guru.
-
- ; local variables:
- ; mode: indented-text
- ; mode: auto-fill
- ; end:
-